Design Patterns for Software Engineers
The purpose of this class is to provide experienced software
engineers with an in-depth understandingof design patterns. Students
will be demonstrated techniques to identify and apply patterns in day to
day system design, and methods to incorporate reuse and uniformity into
their system architectures. The essential principles behind developing
good design patterns and the catalog of patterns used in Design
Patterns: Elements of Reusable Object-Oriented Software, Gamme, et
al (one copy provided to each student) will be discussed in great
detail.
Prerequisites
Knowledge of modern software engineering techniques including Object
Oriented Analysis and Design. Class examples will be presented in the
C++ programming language.
Course Overview
A gentle introduction to design patterns
- Class Introductions
- Where do Patterns Come From
- What are Design Patterns
- Terminology
- How are patterns useful
- Disclaimer (What patterns will not do)
Common design principles
- A Review of Rumbaugh Notation
- OOD Principles
- Object
- Class and Type
- Abstract and Concrete Classes
- Inheritance
- Composition
- Parameterization
- Aggregation and Acquaintance
- Application of Principles
- Reuse
Describing design patterns
- Essential Elements
- Portland Form
- GOF Form
Catalog pattern overview
Creational patterns
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
Structural patterns
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
Behavioral patterns
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method (Skeleton)
- Visitor
Patterns in the software development process
Pattern languages
Class exercise
© Copyright 1995-6, Rogue Wave
Software, Inc.